package com.ice.one;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.concurrent.TimeoutException;

/**
 * MQ生产者
 *
 * @author : Ice-winters
 * @since : 2021-06-20 20:14
 */
public class RabbitProducer {


    public static final String QUEUE_NAME = "zhc-queue";


    public static void main(String[] args) throws IOException, TimeoutException {

        ConnectionFactory factory = new ConnectionFactory();

        factory.setHost("81.70.105.175");
        factory.setVirtualHost("/ice");
        factory.setPort(5672);
        factory.setUsername("icewinters");
        factory.setPassword("icewinters");

        // 获取连接
        Connection connection = factory.newConnection("zhc-connection");

        // 获取信道
        Channel channel = connection.createChannel();

        /*
         * 生成队列
         * 1. 队列名称
         * 2. 队列里面的消息是否需要持久化（磁盘），默认保存在内存中
         * 3. 该队列是否仅仅供一个消费者消费消息， 是否进行消息的共享
         *      true: 可以多个消费者消费，false：只能一个消费者消费这个队列的消息
         * 4. 是否自动删除队列， 最后一个消费者断开连接后，该队列是否自动删除，true:自动删除 false：不自动删除
         * 5. 其他参数
         */
        AMQP.Queue.DeclareOk declareOk = channel.queueDeclare(QUEUE_NAME, true, false, false, null);


        String message = "时间是一场有去无回的旅行！"+ LocalDateTime.now();

        /*
         * 发送一个消息
         * 1. 发送到哪一个交换机
         * 2. 路由的key 本次是队列名称
         * 3. 其他参数信息
         * 4. 消息体
         */
        channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());

        System.out.println("消息发送完毕");

//        connection.close();

    }

}
